package com.example.drcbackend.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.example.drcbackend.Mapper.functionaldependenciesMapper;
import com.example.drcbackend.entity.functionaldependencies;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;

@Service
@Transactional
public class Constant_cService {

    @Autowired
    private functionaldependenciesMapper fm;

    public int Constant_c(int DBid) {
        try {
            // 查询函数依赖集
            LambdaQueryWrapper<functionaldependencies> lqw = new LambdaQueryWrapper<>();
            lqw.eq(functionaldependencies::getDbid, DBid);
            List<functionaldependencies> fds = fm.selectList(lqw);

            // 如果函数依赖集为空，返回默认值1
            if (fds == null || fds.isEmpty()) {
                return 1;
            }

            // 初始化常数 c
            int c = 0;

            // 遍历函数依赖集
            for (functionaldependencies fd : fds) {
                // 获取函数依赖的左部
                String lhs = fd.getLhs();
                if (lhs == null || lhs.trim().isEmpty()) {
                    continue; // 跳过无效的左部
                }

                // 判断左部是否包含多个属性
                if (lhs.contains(",")) {
                    // 如果左部包含多个属性，则 c 的值增加左部属性的数量
                    c += lhs.split(",").length;
                } else {
                    // 如果左部只包含一个属性，则 c 的值增加1
                    c += 1;
                }
            }

            // 如果 c 为0，返回默认值1
            return c > 0 ? c : 1;
        } catch (Exception e) {
            // 捕获异常并返回默认值1
            e.printStackTrace();
            return 1;
        }
    }
}
